﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

// 主界面的继承父类QMainWindow主界面头文件
#include <QMainWindow>

// 网络操作头文件
#include <QNetworkAccessManager>
#include <QNetworkReply>

// 摄像头操作头文件
#include <QCameraInfo>
#include <QCamera>
#include <QMainWindow>
#include <QCameraViewfinder>
#include <QCameraImageCapture>

// 数据库操作头文件
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QBuffer>
#include <QDateTime>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{

    // 连接信号与槽的宏
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    // 图片转化为base64数据
    QByteArray ToBase64(QByteArray imgData);

private:


// 声明私有槽函数
private slots:
    // 百度API模块
    // 获取动物的数据
    void RecvAnimalMsg( QNetworkReply *reply );
    // 识别图片的按钮
    void on_recognitionButton_clicked();

    // 摄像头模块
    // 打开摄像头按钮
    void on_openCameraButton_clicked();
    // 拍照按钮
    void on_photoButton_clicked();
    // 保存图片的函数
    void SlaveImage(int id, const QImage &preview);
//    // 拍照后加载数据库的图片
//    void loadImageFromDatabase(int photoId);
    // 选择识别动物按钮
    void on_animalrecButton_clicked();
    // 选择识别植物按钮
    void on_plantrecButton_clicked();
    // 选择数据信息按钮
    void on_dataButton_clicked();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager * imgManager ;

    // 摄像头指针
    QCamera * cam ;
    // 取景器指针
    QCameraViewfinder * view ;
    // 拍照指针
    QCameraImageCapture * capture ;

    // 动植物识别的标志（1为识别动物，2为识别植物）
    int flag_recognition = 1; // 默认为1识别动物
};

#endif // MAINWINDOW_H
